<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    
    <ui:composition template="templatePadrao.xhtml"> 
                
            <ui:define name="top">       
                <ui:include src="menu.xhtml" />
            </ui:define>        
        
   <ui:define name="content">   

       <h:form id="formMessages">
           <p:growl id="messages" widgetVar="messages" showDetail="true" life="5000" sticky="false" autoUpdate="true" />  
       </h:form>
       
       <h:form id="principal" prependId="false">
           
                <p:contextMenu for="usuarios">                      
                     <p:menuitem value="Deletar" update="usuarios" icon="ui-icon-close" onclick="confirmation.show()"/>  
                     <p:menuitem value="Editar"  update="principal" icon="ui-icon-arrowrefresh-1-w" actionListener="#{UsuarioController.preparaEdicao()}"/>
                </p:contextMenu>             
               
               <p:fieldset legend="Usuário">
                   
                                <p:panelGrid id="padrao" columns="4" style="width: 100%;" styleClass="usuarioGrid">
                                             <p:outputLabel>Nome *</p:outputLabel>
                                             <p:inputText id="nome_usuario"  size="40" maxlength="60" value="#{UsuarioController.usuario.nome}" title="Informe o Nome" />

                                             <p:outputLabel>E-mail *</p:outputLabel>
                                             <p:inputText id="email_usuario" size="40" maxlength="60" value="#{UsuarioController.usuario.email}" title="Informe o E-mail" />                                

                                             <p:outputLabel>Login *</p:outputLabel>
                                             <p:inputText id="login_usuario" size="30" maxlength="30" value="#{UsuarioController.usuario.login}" title="Informe o Login" />

                                             <p:outputLabel>Senha *</p:outputLabel>
                                             <p:password id="senha_usuario" size="30" maxlength="30" value="#{UsuarioController.usuario.senha}" title="Preencha somente em caso de alteração/inclusão"/>                                             
                                             
                                             <p:selectCheckboxMenu label="Unidades" id="selectUnidade" value="#{UsuarioController.selectedUnidades}">                                  
                                                    <f:selectItems value="#{UsuarioController.unidades}" />
                                             </p:selectCheckboxMenu>
                                             
                                            <p:selectOneMenu style="width: 300px;" label="Grupo" id="selectGrupo" value="#{UsuarioController.selectedGrupo}">                                    
                                                <f:selectItems value="#{UsuarioController.carregarSelect}" />
                                            </p:selectOneMenu>  
                                             
                                            <h:inputHidden value="#{UsuarioController.senhaCriptografada}"/>
                                             
                                </p:panelGrid>                                                            
                              
               <p:commandButton value="Salvar" update="usuarios :principal" actionListener="#{UsuarioController.preparaInclusao()}"/>
               <p:commandButton value="Cancelar" update="principal" actionListener="#{UsuarioController.resetUsuario()}"/>
               
               </p:fieldset>               
           
            <p:dataTable id="usuarios" var="usuario" emptyMessage="Não existem usuários cadastrados" 
                         value="#{UsuarioController.lista}" rowKey="#{usuario.id}" 
                         selectionMode="single" selection="#{UsuarioController.usuarioSelecionado}" 
                         paginator="true" rows="10"> 

                    <p:column filterMatchMode="contains" filterBy="#{usuario.nome}">   
                        <f:facet name="header">  
                                <h:outputText value="Nome" />  
                        </f:facet>                        
                            <h:outputText value="#{usuario.nome}"/>
                    </p:column>
                
                    <p:column filterMatchMode="contains" filterBy="#{usuario.email}">   
                        <f:facet name="header">  
                                <h:outputText value="Email" />  
                        </f:facet>                        
                            <h:outputText value="#{usuario.email}"/>
                    </p:column>    
                
                   <p:column filterMatchMode="contains" filterBy="#{usuario.login}">   
                        <f:facet name="header">  
                                <h:outputText value="Login" />  
                        </f:facet>                        
                            <h:outputText value="#{usuario.login}"/>
                    </p:column>                  
                
            </p:dataTable>
           
           <p:commandButton value="Deletar" id="deletarUsuario" update="usuarios :principal" onclick="confirmation.show()"/>
           <p:commandButton value="Editar"  id="editarUsuario" update="principal" actionListener="#{UsuarioController.preparaEdicao()}"/>                                
           
       </h:form>
       
        <!-- Abaixo temos um modal de confirmação de exclusão repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
        <h:form id="dlg" prependId="false">
            <p:confirmDialog message="Deseja realmente excluir este registro?" header="Aviso" severity="alert" widgetVar="confirmation" modal="true">
                <!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
                <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide();" actionListener="#{UsuarioController.deleteUsuario()}" process="@form" update=":principal" />
                <!--caso seja não somente fecha o modal-->
                <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide();" type="button"/>
            </p:confirmDialog>
        </h:form>        
       
   </ui:define>
        
   </ui:composition>
        
</html>        